package reflect;

import reflect.annotations.AutoRunMethod;

import java.lang.reflect.Method;

/**
 * 利用反射机制，调用Person类中所有的备注接@AutoRunMethod标注的方法若干次
 * 次数由注解参数值解决
 */
public class Test3 {
    public static void main(String[] args) throws Exception {
        Class cls = Class.forName("reflect.Person");
        Object obj = cls.newInstance();
        Method[] methods = cls.getMethods();
        for (Method method : methods) {
            if (method.isAnnotationPresent(AutoRunMethod.class)) { //  判断当前方法是否有@AutoRunMethod注解
                AutoRunMethod annotation = method.getAnnotation(AutoRunMethod.class);// 获取注解对象
                int value = annotation.value(); //  获取注解参数值
                System.out.println("调用方法："+method.getName()+"()"+value+"次"); // 调用方法
                for (int i = 0; i < value; i++) {
                    method.invoke(obj);
                }
            }
        }
    }
}
